import axios from 'axios'

// 创建axios实例
const api = axios.create({
  baseURL: '/api',
  timeout: 30000,
  headers: {
    'Content-Type': 'application/json'
  }
})

// 请求拦截器
api.interceptors.request.use(
  (config) => {
    return config
  },
  (error) => {
    return Promise.reject(error)
  }
)

// 响应拦截器
api.interceptors.response.use(
  (response) => {
    return response.data
  },
  (error) => {
    console.error('API请求错误:', error)
    return Promise.reject(error)
  }
)

// API方法
export default {
  // ========== Webhook 端点 ==========
  
  // 接收Webhook (通常由Git平台调用，前端不直接使用)
  // webhook(payload) {
  //   return api.post('/webhook', payload)
  // },

  // ========== 部署管理 ==========
  
  // 手动触发部署
  manualDeploy(data = {}) {
    return api.post('/deploy/manual', data)
  },

  // 获取当前部署状态
  getCurrentDeployStatus() {
    return api.get('/deploy/status')
  },

  // 获取指定部署任务状态
  getDeployStatus(deployId) {
    return api.get(`/deploy/${deployId}/status`)
  },

  // 获取指定部署任务日志
  getDeployLogs(deployId) {
    return api.get(`/deploy/${deployId}/logs`)
  },

  // 停止当前部署
  stopDeploy() {
    return api.post('/deploy/stop')
  },

  // ========== 配置管理 ==========
  
  // 获取系统配置
  getConfig() {
    return api.get('/config')
  },

  // 更新系统配置
  updateConfig(config) {
    return api.put('/config', config)
  },

  // 重置配置为默认值
  resetConfig() {
    return api.post('/config/reset')
  },

  // 验证配置有效性
  validateConfig(config) {
    return api.post('/config/validate', config)
  },

  // 验证Git认证配置
  validateAuthConfig(authConfig) {
    return api.post('/config/validate-auth', authConfig)
  },

  // ========== 历史记录 ==========
  
  // 获取部署历史记录
  getHistory(params = {}) {
    return api.get('/history', { params })
  },

  // 获取指定部署记录详情
  getHistoryById(deployId) {
    return api.get(`/history/${deployId}`)
  },

  // 删除指定部署记录
  deleteHistory(deployId) {
    return api.delete(`/history/${deployId}`)
  },

  // 清空所有历史记录
  clearHistory() {
    return api.delete('/history')
  },

  // 获取部署统计信息
  getStats() {
    return api.get('/history/stats/summary')
  },

  // ========== 扩展功能 ==========
  
  // 批量删除历史记录 (如果后端支持)
  batchDeleteHistory(deployIds) {
    return api.post('/history/batch/delete', { deployIds })
  }
}